package com.it.schoolbookshop_back.utils;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

import java.io.IOException;

/**
 * 布尔值到整数的反序列化器
 * 用于将布尔值(true/false)转换为整数(1/0)
 */
public class BooleanToIntegerDeserializer extends JsonDeserializer<Integer> {

    @Override
    public Integer deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        // 如果是布尔值
        if (p.getCurrentToken().isBoolean()) {
            return p.getBooleanValue() ? 1 : 0;
        }
        
        // 如果是数字，直接返回
        if (p.getCurrentToken().isNumeric()) {
            return p.getIntValue();
        }
        
        // 如果是字符串，尝试解析
        if (p.getCurrentToken().isScalarValue()) {
            String text = p.getText().trim();
            if ("true".equalsIgnoreCase(text)) {
                return 1;
            } else if ("false".equalsIgnoreCase(text)) {
                return 0;
            }
            
            try {
                return Integer.parseInt(text);
            } catch (NumberFormatException e) {
                // 忽略异常
            }
        }
        
        // 默认返回0
        return 0;
    }
} 